using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
using CrmExtWeb.Core.Diagnostics;

/// <summary>
/// Summary description for Global
/// </summary>
public class ApplicationClass : HttpApplication
{
    public ApplicationClass()
	{
		//
		// TODO: Add constructor logic here
		//
	}

    void Application_Start(object sender, EventArgs e)
    {
        // Code that runs on application startup

    }

    void Application_End(object sender, EventArgs e)
    {
        //  Code that runs on application shutdown

    }

    void Application_Error(object sender, EventArgs e)
    {
        if (Request != null && Response != null)
        {
            Exception ex = Server.GetLastError();

            if (ex is HttpUnhandledException)
            {
                HttpUnhandledException huEx = (HttpUnhandledException)ex;
                
                ErrorDetail detail = ErrorHandler.HandleError(huEx, Request.Url);
                
                base.Response.Clear();
                base.Response.Redirect("~/Pages/ErrorPage.aspx?errorpath=" + HttpUtility.UrlEncode(Request.Url.PathAndQuery) + "&errorcode=" + detail.HexCode);
                base.Response.End();
            }
        }
    }

    void Session_Start(object sender, EventArgs e)
    {
        // Code that runs when a new session is started

    }

    void Session_End(object sender, EventArgs e)
    {
        // Code that runs when a session ends. 
        // Note: The Session_End event is raised only when the sessionstate mode
        // is set to InProc in the Web.config file. If session mode is set to StateServer 
        // or SQLServer, the event is not raised.
        
    }
}
